const userGoodsDao = require('../../dao/modules/userGoodsDao.js')

// 获取多少天后的时间
function getDateStr(today, addDayCount) {
	var dd;
	if (today) {
		dd = new Date(today);
	} else {
		dd = new Date();
	}
	dd.setDate(dd.getDate() + addDayCount); //获取AddDayCount天后的日期
	var y = dd.getFullYear();
	var m =
		dd.getMonth() + 1 < 10 ?
		"0" + (dd.getMonth() + 1) :
		dd.getMonth() + 1;
	var d = dd.getDate() < 10 ? "0" + dd.getDate() : dd.getDate();
	return y + "-" + m + "-" + d + " 23:59:59";
}

//比较日期大小
function getDataCompare(d2) {
	//当前时间
	let d1 = new Date();

	//转换为标准时间"2019/12/29 23:59:59"
	d2 = d2.replace(/-/g, "/");
	d2 = new Date(d2);

	//如果当前时间大于到期时间
	//valueOf() 函数返回指定对象的原始值,这里返回以毫秒数存储的时间值
	return d1.valueOf() > d2.valueOf()
}

module.exports = async (obj, originalParam) => {
	let user_order_success = true;
	let { data = {}, verifyResult } = obj;
	let { db, _ } = originalParam;
	let {
		out_trade_no,
		total_fee
	} = data;

	//设置订单支付成功
	let order = await db.collection('uni-id-base-order').doc(out_trade_no)
		.update({
			status: 2,
			transaction_id: data.payNo,
			paid_time: new Date().getTime(),
			update_time: new Date().getTime()
		});


	//----发货----
	let goods = (await db.collection('order_goods').where({
		oid: out_trade_no
	}).get({
		getOne: true
	})).data[0]


	// 不同类型的会员 续期处理？
	//全部记录在 user 的 vip_role 字段
	//字段内容示例
	// const vip_role = {
	// 	'all': [], //拥有的所有权限类别
	// 	'role1': 'express_date', //权限 - 过期时间
	// }

	//分别查询出当前用户信息 以及 会员信息
	let user_id = goods.user_id
	let goods_id = goods.goods_id

	let currentUser = (await db.collection('uni-id-users').where({
		_id: user_id
	}).get({
		getOne: true
	})).data[0]

	let currentRole = (await db.collection('uce-vip-role').where({
		_id: goods_id
	}).get({
		getOne: true
	})).data[0]

	//当前已有权限
	let vip_role = currentUser.vip_role || { all: [] }
	if (vip_role.all.includes(currentRole.role_type)) {
		if (vip_role[currentRole.role_type] == 0) {
			//如果之前是永久会员 不处理
			vip_role[currentRole.role_type] = 0
		} else if (currentRole.expire_days == 0) {
			//如果现在是永久会员 直接处理
			vip_role[currentRole.role_type] = 0
		} else {
			//先判断是否已经过期
			if (getDataCompare(vip_role[currentRole.role_type])) {
				vip_role[currentRole.role_type] = getDateStr(null, currentRole.expire_days)
			} else {
				vip_role[currentRole.role_type] = getDateStr(vip_role[currentRole.role_type],
					currentRole.expire_days)
			}
		}
	} else {
		vip_role.all.push(currentRole.role_type)
		if (currentRole.expire_days == 0) {
			//如果是永久会员
			vip_role[currentRole.role_type] = 0
		} else {
			//否则就有过期时间
			vip_role[currentRole.role_type] = getDateStr(null, currentRole.expire_days)
		}
	}

	//更新当前用户的信息
	await db.collection('uni-id-users').where({
		_id: user_id
	}).update({
		vip_role: vip_role
	})

	return user_order_success;
};
